# Makefile for HVACSIM+
# by Mike Galler, NIST October 2008
# A simple makefile, easy for anybody to modify and use
# Type 'make all' in a console to compile HVACGEN, SLIMCON, and MODSIM
# Or Type 'make hvacgen', 'make slimcon', or 'make modsim' to only compile one of them
# Type 'make clean' to remove all temporary files created during compile.
CC = f95

all: hvacgen slimcon modsim misc


### Start HVACGEN
hvacgen1: front/hvacgen1.f90
	cd front; $(CC) -c hvacgen1.f90 -o hvacgen1.o

hvacgen2: front/hvacgen2.f90
	cd front; $(CC) -c hvacgen2.f90 -o hvacgen2.o 

hvacgen3: 
	cd front; $(CC) -c hvacgen3.f90 -o hvacgen3.o

hvacgen4: 
	cd front; $(CC) -c hvacgen4.f90 -o hvacgen4.o 

hvacgen5: 
	cd front; $(CC) -c hvacgen5.f90 -o hvacgen5.o

hvacgen6: 
	cd front; $(CC) -c hvacgen6.f90 -o hvacgen6.o 

hvaccomm: 
	cd front; $(CC) -c hvaccomm.f90 -o hvaccomm.o 

hvacgen: hvaccomm hvacgen1 hvacgen2 hvacgen3 hvacgen4 hvacgen5 hvacgen6 
	cd front; $(CC) hvacgen1.o hvacgen2.o hvacgen3.o hvacgen4.o hvacgen5.o hvacgen6.o hvaccomm.o -o hvacgen &
	#$(CC) front/hvacgen1.o front/hvacgen2.o front/hvacgen3.o front/hvacgen4.o front/hvacgen5.o front/hvacgen6.o front/hvaccomm.o -o front/hvacgen



#HVGENFILES=hvacgen1.f90 hvacgen2.f90 hvacgen3.f90 hvacgen4.f90 hvacgen5.f90 hvacgen5.f90 hvaccomm.f90

#hvg2: $(HVGENFILES): 
	#cd front; $(CC) $(HVGENFILES) -o hvacgen

### Start SLIMCON
sln:
	cd front; $(CC) -c slimcon.f90 -o slimcon.o

slm:
	cd front; $(CC) -c slimcomm.f90 -o slimcomm.o 

slimcon: hvaccomm slm sln 
	cd front; $(CC) slimcon.o slimcomm.o hvaccomm.o -o slimcon &

### Start MODSIM
ahu_wbe: 
	cd model; $(CC) -c ahu_wbe.f90 -o ahu_wbe.o

airpr: 
	cd model; $(CC) -c airpr.f90 -o airpr.o

ASH_building: 
	cd model; $(CC) -c ASH_building.f90 -o ASH_building.o

ASH_composit: 
	cd model; $(CC) -c ASH_composit.f90 -o ASH_composit.o

ASH_control: 
	cd model; $(CC) -c ASH_control.f90 -o ASH_control.o

ASH_element: 
	cd model; $(CC) -c ASH_element.f90 -o ASH_element.o

ASH_fluid: 
	cd model; $(CC) -c ASH_fluid.f90 -o ASH_fluid.o

ASH_heatmass: 
	cd model; $(CC) -c ASH_heatmass.f90 -o ASH_heatmass.o

ASH_performance: 
	cd model; $(CC) -c ASH_performance.f90 -o ASH_performance.o

ASH_sensor: 
	cd model; $(CC) -c ASH_sensor.f90 -o ASH_sensor.o

blc: 
	cd model; $(CC) -c blc.f90 -o blc.o

blc_head: 
	cd model; $(CC) -c blc_head.f90 -o blc_head.o

plant: 
	cd model; $(CC) -c plant.f90 -o plant.o

refrigpr: 
	cd model; $(CC) -c refrigpr.f90 -o refrigpr.o

typesa: 
	cd model; $(CC) -c typesa.f90 -o typesa.o

typesb: 
	cd model; $(CC) -c typesb.f90 -o typesb.o

types: 
	cd model; $(CC) -c types.f90 -o types.o

utility_ashrae: 
	cd model; $(CC) -c utility_ashrae.f90 -o utility_ashrae.o

utilityb: 
	cd model; $(CC) -c utilityb.f90 -o utilityb.o

utility_blc: 
	cd model; $(CC) -c utility_blc.f90 -o utility_blc.o

utility: 
	cd model; $(CC) -c utility.f90 -o utility.o

utility_wbe: 
	cd model; $(CC) -c utility_wbe.f90 -o utility_wbe.o

watpr: 
	cd model; $(CC) -c watpr.f90 -o watpr.o

datetime: 
	cd drive; $(CC) -c datetime.f90 -o datetime.o

modbdf: 
	cd drive; $(CC) -c modbdf.f90 -o modbdf.o

modblk: 
	cd drive; $(CC) -c modblk.f90 -o modblk.o

modeqt: 
	cd drive; $(CC) -c modeqt.f90 -o modeqt.o

modino: 
	cd drive; $(CC) -c modino.f90 -o modino.o

modsimo: 
	cd drive; $(CC) -c modsim.f90 -o modsim.o

modsim_head: 
	cd drive; $(CC) -c modsim_head.f90 -o modsim_head.o; cp *.mod ../model

rdenv: 
	cd drive; $(CC) -c rdenv.f90 -o rdenv.o

select: 
	cd drive; $(CC) -c select.f90 -o select.o

snsqa: 
	cd drive; $(CC) -c snsqa.f90 -o snsqa.o

snsqb: 
	cd drive; $(CC) -c snsqb.f90 -o snsqb.o

snsqc: 
	cd drive; $(CC) -c snsqc.f90 -o snsqc.o

modsim: modsim_head blc_head ahu_wbe airpr ASH_building ASH_composit ASH_control ASH_element ASH_fluid ASH_heatmass ASH_performance ASH_sensor blc plant refrigpr typesa typesb types utility_ashrae utilityb utility_blc utility utility_wbe watpr datetime modbdf modblk modeqt modino modsimo rdenv select snsqa snsqb snsqc
	$(CC) drive/modsim_head.o model/ahu_wbe.o model/airpr.o model/ASH_building.o model/ASH_composit.o model/ASH_control.o model/ASH_element.o model/ASH_fluid.o model/ASH_heatmass.o model/ASH_performance.o model/ASH_sensor.o model/blc.o model/blc_head.o model/plant.o model/refrigpr.o model/typesa.o model/typesb.o model/types.o model/utility_ashrae.o model/utilityb.o model/utility_blc.o model/utility.o model/utility_wbe.o model/watpr.o drive/datetime.o drive/modbdf.o drive/modblk.o drive/modeqt.o drive/modino.o drive/modsim.o drive/rdenv.o drive/select.o drive/snsqa.o drive/snsqb.o drive/snsqc.o -o model/modsim -I drive -I model &
 
misc: m_sort m_state m_upd ctfgen rdwdf


m_sort:
	cd misc; $(CC) sortsb.f90 -o sortsb &

m_state:
	cd misc; $(CC) state_location.f90 -o state_location &

m_upd:
	cd misc; $(CC) upd_info.f90 -o upd_info &

ctfgen:
	cd front; $(CC) ctfgen.f90 -o ctfgen &

rdwdf:
	cd front; $(CC) rdwdf.f90 -o rdwdf &

install: modsim hvacgen slimcon
	 mkdir ../WORK; cp front/slimcon ../WORK; cp front/hvacgen ../WORK; cp model/modsim ../WORK; cp ../DATA/* ../WORK

### clean up
clean:
	-rm model/*.o drive/*.o front/*.o model/*.mod drive/*.mod front/*.mod
